/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * This code was generated by https://code.google.com/p/google-apis-client-generator/
 * (build: 2013-06-05 16:09:48 UTC)
 * on 2013-06-06 at 13:45:57 UTC 
 * Modify at your own risk.
 */

package com.entity.mobiledeviceendpoint;

/**
 * Service definition for Mobiledeviceendpoint (v1).
 *
 * <p>
 * This is an API
 * </p>
 *
 * <p>
 * For more information about this service, see the
 * <a href="" target="_blank">API Documentation</a>
 * </p>
 *
 * <p>
 * This service uses {@link MobiledeviceendpointRequestInitializer} to initialize global parameters via its
 * {@link Builder}.
 * </p>
 *
 * @since 1.3
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public class Mobiledeviceendpoint extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient {

  // Note: Leave this static initializer at the top of the file.
  static {
    com.google.api.client.util.Preconditions.checkState(
        com.google.api.client.googleapis.GoogleUtils.MAJOR_VERSION == 1 &&
        com.google.api.client.googleapis.GoogleUtils.MINOR_VERSION == 14,
        "You are currently running with version %s of google-api-client. " +
        "You need version 1.14 of google-api-client to run version " +
        "1.14.2-beta of the  library.", com.google.api.client.googleapis.GoogleUtils.VERSION);
  }

  /**
   * The default encoded root URL of the service. This is determined when the library is generated
   * and normally should not be changed.
   *
   * @since 1.7
   */
  public static final String DEFAULT_ROOT_URL = "https://myapp.appspot.com/_ah/api/";

  /**
   * The default encoded service path of the service. This is determined when the library is
   * generated and normally should not be changed.
   *
   * @since 1.7
   */
  public static final String DEFAULT_SERVICE_PATH = "mobiledeviceendpoint/v1/";

  /**
   * The default encoded base URL of the service. This is determined when the library is generated
   * and normally should not be changed.
   */
  public static final String DEFAULT_BASE_URL = DEFAULT_ROOT_URL + DEFAULT_SERVICE_PATH;

  /**
   * Constructor.
   *
   * <p>
   * Use {@link Builder} if you need to specify any of the optional parameters.
   * </p>
   *
   * @param transport HTTP transport, which should normally be:
   *        <ul>
   *        <li>Google App Engine:
   *        {@code com.google.api.client.extensions.appengine.http.UrlFetchTransport}</li>
   *        <li>Android: {@code newCompatibleTransport} from
   *        {@code com.google.api.client.extensions.android.http.AndroidHttp}</li>
   *        <li>Java: {@link com.google.api.client.googleapis.javanet.GoogleNetHttpTransport#newTrustedTransport()}
   *        </li>
   *        </ul>
   * @param jsonFactory JSON factory, which may be:
   *        <ul>
   *        <li>Jackson: {@code com.google.api.client.json.jackson2.JacksonFactory}</li>
   *        <li>Google GSON: {@code com.google.api.client.json.gson.GsonFactory}</li>
   *        <li>Android Honeycomb or higher:
   *        {@code com.google.api.client.extensions.android.json.AndroidJsonFactory}</li>
   *        </ul>
   * @param httpRequestInitializer HTTP request initializer or {@code null} for none
   * @since 1.7
   */
  public Mobiledeviceendpoint(com.google.api.client.http.HttpTransport transport, com.google.api.client.json.JsonFactory jsonFactory,
      com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
    this(new Builder(transport, jsonFactory, httpRequestInitializer));
  }

  /**
   * @param builder builder
   */
  Mobiledeviceendpoint(Builder builder) {
    super(builder);
  }

  @Override
  protected void initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest<?> httpClientRequest) throws java.io.IOException {
    super.initialize(httpClientRequest);
  }

  /**
   * Create a request for the method "getMobileDevice".
   *
   * This request holds the parameters needed by the the mobiledeviceendpoint server.  After setting
   * any optional parameters, call the {@link GetMobileDevice#execute()} method to invoke the remote
   * operation.
   *
   * @param id
   * @return the request
   */
  public GetMobileDevice getMobileDevice(java.lang.Long id) throws java.io.IOException {
    GetMobileDevice result = new GetMobileDevice(id);
    initialize(result);
    return result;
  }

  public class GetMobileDevice extends MobiledeviceendpointRequest<com.entity.mobiledeviceendpoint.model.MobileDevice> {

    private static final String REST_PATH = "mobiledevice/{id}";

    /**
     * Create a request for the method "getMobileDevice".
     *
     * This request holds the parameters needed by the the mobiledeviceendpoint server.  After setting
     * any optional parameters, call the {@link GetMobileDevice#execute()} method to invoke the remote
     * operation. <p> {@link GetMobileDevice#initialize(com.google.api.client.googleapis.services.Abst
     * ractGoogleClientRequest)} must be called to initialize this instance immediately after invoking
     * the constructor. </p>
     *
     * @param id
     * @since 1.13
     */
    protected GetMobileDevice(java.lang.Long id) {
      super(Mobiledeviceendpoint.this, "GET", REST_PATH, null, com.entity.mobiledeviceendpoint.model.MobileDevice.class);
      this.id = com.google.api.client.util.Preconditions.checkNotNull(id, "Required parameter id must be specified.");
    }

    @Override
    public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
      return super.executeUsingHead();
    }

    @Override
    public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
      return super.buildHttpRequestUsingHead();
    }

    @Override
    public GetMobileDevice setAlt(java.lang.String alt) {
      return (GetMobileDevice) super.setAlt(alt);
    }

    @Override
    public GetMobileDevice setFields(java.lang.String fields) {
      return (GetMobileDevice) super.setFields(fields);
    }

    @Override
    public GetMobileDevice setKey(java.lang.String key) {
      return (GetMobileDevice) super.setKey(key);
    }

    @Override
    public GetMobileDevice setOauthToken(java.lang.String oauthToken) {
      return (GetMobileDevice) super.setOauthToken(oauthToken);
    }

    @Override
    public GetMobileDevice setPrettyPrint(java.lang.Boolean prettyPrint) {
      return (GetMobileDevice) super.setPrettyPrint(prettyPrint);
    }

    @Override
    public GetMobileDevice setQuotaUser(java.lang.String quotaUser) {
      return (GetMobileDevice) super.setQuotaUser(quotaUser);
    }

    @Override
    public GetMobileDevice setUserIp(java.lang.String userIp) {
      return (GetMobileDevice) super.setUserIp(userIp);
    }

    @com.google.api.client.util.Key
    private java.lang.Long id;

    /**

     */
    public java.lang.Long getId() {
      return id;
    }

    public GetMobileDevice setId(java.lang.Long id) {
      this.id = id;
      return this;
    }

    @Override
    public GetMobileDevice set(String parameterName, Object value) {
      return (GetMobileDevice) super.set(parameterName, value);
    }
  }

  /**
   * Create a request for the method "insertMobileDevice".
   *
   * This request holds the parameters needed by the the mobiledeviceendpoint server.  After setting
   * any optional parameters, call the {@link InsertMobileDevice#execute()} method to invoke the
   * remote operation.
   *
   * @param content the {@link com.entity.mobiledeviceendpoint.model.MobileDevice}
   * @return the request
   */
  public InsertMobileDevice insertMobileDevice(com.entity.mobiledeviceendpoint.model.MobileDevice content) throws java.io.IOException {
    InsertMobileDevice result = new InsertMobileDevice(content);
    initialize(result);
    return result;
  }

  public class InsertMobileDevice extends MobiledeviceendpointRequest<com.entity.mobiledeviceendpoint.model.MobileDevice> {

    private static final String REST_PATH = "mobiledevice";

    /**
     * Create a request for the method "insertMobileDevice".
     *
     * This request holds the parameters needed by the the mobiledeviceendpoint server.  After setting
     * any optional parameters, call the {@link InsertMobileDevice#execute()} method to invoke the
     * remote operation. <p> {@link InsertMobileDevice#initialize(com.google.api.client.googleapis.ser
     * vices.AbstractGoogleClientRequest)} must be called to initialize this instance immediately
     * after invoking the constructor. </p>
     *
     * @param content the {@link com.entity.mobiledeviceendpoint.model.MobileDevice}
     * @since 1.13
     */
    protected InsertMobileDevice(com.entity.mobiledeviceendpoint.model.MobileDevice content) {
      super(Mobiledeviceendpoint.this, "POST", REST_PATH, content, com.entity.mobiledeviceendpoint.model.MobileDevice.class);
    }

    @Override
    public InsertMobileDevice setAlt(java.lang.String alt) {
      return (InsertMobileDevice) super.setAlt(alt);
    }

    @Override
    public InsertMobileDevice setFields(java.lang.String fields) {
      return (InsertMobileDevice) super.setFields(fields);
    }

    @Override
    public InsertMobileDevice setKey(java.lang.String key) {
      return (InsertMobileDevice) super.setKey(key);
    }

    @Override
    public InsertMobileDevice setOauthToken(java.lang.String oauthToken) {
      return (InsertMobileDevice) super.setOauthToken(oauthToken);
    }

    @Override
    public InsertMobileDevice setPrettyPrint(java.lang.Boolean prettyPrint) {
      return (InsertMobileDevice) super.setPrettyPrint(prettyPrint);
    }

    @Override
    public InsertMobileDevice setQuotaUser(java.lang.String quotaUser) {
      return (InsertMobileDevice) super.setQuotaUser(quotaUser);
    }

    @Override
    public InsertMobileDevice setUserIp(java.lang.String userIp) {
      return (InsertMobileDevice) super.setUserIp(userIp);
    }

    @Override
    public InsertMobileDevice set(String parameterName, Object value) {
      return (InsertMobileDevice) super.set(parameterName, value);
    }
  }

  /**
   * Create a request for the method "listMobileDevice".
   *
   * This request holds the parameters needed by the the mobiledeviceendpoint server.  After setting
   * any optional parameters, call the {@link ListMobileDevice#execute()} method to invoke the remote
   * operation.
   *
   * @return the request
   */
  public ListMobileDevice listMobileDevice() throws java.io.IOException {
    ListMobileDevice result = new ListMobileDevice();
    initialize(result);
    return result;
  }

  public class ListMobileDevice extends MobiledeviceendpointRequest<com.entity.mobiledeviceendpoint.model.CollectionResponseMobileDevice> {

    private static final String REST_PATH = "mobiledevice";

    /**
     * Create a request for the method "listMobileDevice".
     *
     * This request holds the parameters needed by the the mobiledeviceendpoint server.  After setting
     * any optional parameters, call the {@link ListMobileDevice#execute()} method to invoke the
     * remote operation. <p> {@link ListMobileDevice#initialize(com.google.api.client.googleapis.servi
     * ces.AbstractGoogleClientRequest)} must be called to initialize this instance immediately after
     * invoking the constructor. </p>
     *
     * @since 1.13
     */
    protected ListMobileDevice() {
      super(Mobiledeviceendpoint.this, "GET", REST_PATH, null, com.entity.mobiledeviceendpoint.model.CollectionResponseMobileDevice.class);
    }

    @Override
    public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
      return super.executeUsingHead();
    }

    @Override
    public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
      return super.buildHttpRequestUsingHead();
    }

    @Override
    public ListMobileDevice setAlt(java.lang.String alt) {
      return (ListMobileDevice) super.setAlt(alt);
    }

    @Override
    public ListMobileDevice setFields(java.lang.String fields) {
      return (ListMobileDevice) super.setFields(fields);
    }

    @Override
    public ListMobileDevice setKey(java.lang.String key) {
      return (ListMobileDevice) super.setKey(key);
    }

    @Override
    public ListMobileDevice setOauthToken(java.lang.String oauthToken) {
      return (ListMobileDevice) super.setOauthToken(oauthToken);
    }

    @Override
    public ListMobileDevice setPrettyPrint(java.lang.Boolean prettyPrint) {
      return (ListMobileDevice) super.setPrettyPrint(prettyPrint);
    }

    @Override
    public ListMobileDevice setQuotaUser(java.lang.String quotaUser) {
      return (ListMobileDevice) super.setQuotaUser(quotaUser);
    }

    @Override
    public ListMobileDevice setUserIp(java.lang.String userIp) {
      return (ListMobileDevice) super.setUserIp(userIp);
    }

    @com.google.api.client.util.Key
    private java.lang.String cursor;

    /**

     */
    public java.lang.String getCursor() {
      return cursor;
    }

    public ListMobileDevice setCursor(java.lang.String cursor) {
      this.cursor = cursor;
      return this;
    }

    @com.google.api.client.util.Key
    private java.lang.Integer limit;

    /**

     */
    public java.lang.Integer getLimit() {
      return limit;
    }

    public ListMobileDevice setLimit(java.lang.Integer limit) {
      this.limit = limit;
      return this;
    }

    @Override
    public ListMobileDevice set(String parameterName, Object value) {
      return (ListMobileDevice) super.set(parameterName, value);
    }
  }

  /**
   * Create a request for the method "removeMobileDevice".
   *
   * This request holds the parameters needed by the the mobiledeviceendpoint server.  After setting
   * any optional parameters, call the {@link RemoveMobileDevice#execute()} method to invoke the
   * remote operation.
   *
   * @param id
   * @return the request
   */
  public RemoveMobileDevice removeMobileDevice(java.lang.Long id) throws java.io.IOException {
    RemoveMobileDevice result = new RemoveMobileDevice(id);
    initialize(result);
    return result;
  }

  public class RemoveMobileDevice extends MobiledeviceendpointRequest<com.entity.mobiledeviceendpoint.model.MobileDevice> {

    private static final String REST_PATH = "mobiledevice/{id}";

    /**
     * Create a request for the method "removeMobileDevice".
     *
     * This request holds the parameters needed by the the mobiledeviceendpoint server.  After setting
     * any optional parameters, call the {@link RemoveMobileDevice#execute()} method to invoke the
     * remote operation. <p> {@link RemoveMobileDevice#initialize(com.google.api.client.googleapis.ser
     * vices.AbstractGoogleClientRequest)} must be called to initialize this instance immediately
     * after invoking the constructor. </p>
     *
     * @param id
     * @since 1.13
     */
    protected RemoveMobileDevice(java.lang.Long id) {
      super(Mobiledeviceendpoint.this, "DELETE", REST_PATH, null, com.entity.mobiledeviceendpoint.model.MobileDevice.class);
      this.id = com.google.api.client.util.Preconditions.checkNotNull(id, "Required parameter id must be specified.");
    }

    @Override
    public RemoveMobileDevice setAlt(java.lang.String alt) {
      return (RemoveMobileDevice) super.setAlt(alt);
    }

    @Override
    public RemoveMobileDevice setFields(java.lang.String fields) {
      return (RemoveMobileDevice) super.setFields(fields);
    }

    @Override
    public RemoveMobileDevice setKey(java.lang.String key) {
      return (RemoveMobileDevice) super.setKey(key);
    }

    @Override
    public RemoveMobileDevice setOauthToken(java.lang.String oauthToken) {
      return (RemoveMobileDevice) super.setOauthToken(oauthToken);
    }

    @Override
    public RemoveMobileDevice setPrettyPrint(java.lang.Boolean prettyPrint) {
      return (RemoveMobileDevice) super.setPrettyPrint(prettyPrint);
    }

    @Override
    public RemoveMobileDevice setQuotaUser(java.lang.String quotaUser) {
      return (RemoveMobileDevice) super.setQuotaUser(quotaUser);
    }

    @Override
    public RemoveMobileDevice setUserIp(java.lang.String userIp) {
      return (RemoveMobileDevice) super.setUserIp(userIp);
    }

    @com.google.api.client.util.Key
    private java.lang.Long id;

    /**

     */
    public java.lang.Long getId() {
      return id;
    }

    public RemoveMobileDevice setId(java.lang.Long id) {
      this.id = id;
      return this;
    }

    @Override
    public RemoveMobileDevice set(String parameterName, Object value) {
      return (RemoveMobileDevice) super.set(parameterName, value);
    }
  }

  /**
   * Create a request for the method "updateMobileDevice".
   *
   * This request holds the parameters needed by the the mobiledeviceendpoint server.  After setting
   * any optional parameters, call the {@link UpdateMobileDevice#execute()} method to invoke the
   * remote operation.
   *
   * @param content the {@link com.entity.mobiledeviceendpoint.model.MobileDevice}
   * @return the request
   */
  public UpdateMobileDevice updateMobileDevice(com.entity.mobiledeviceendpoint.model.MobileDevice content) throws java.io.IOException {
    UpdateMobileDevice result = new UpdateMobileDevice(content);
    initialize(result);
    return result;
  }

  public class UpdateMobileDevice extends MobiledeviceendpointRequest<com.entity.mobiledeviceendpoint.model.MobileDevice> {

    private static final String REST_PATH = "mobiledevice";

    /**
     * Create a request for the method "updateMobileDevice".
     *
     * This request holds the parameters needed by the the mobiledeviceendpoint server.  After setting
     * any optional parameters, call the {@link UpdateMobileDevice#execute()} method to invoke the
     * remote operation. <p> {@link UpdateMobileDevice#initialize(com.google.api.client.googleapis.ser
     * vices.AbstractGoogleClientRequest)} must be called to initialize this instance immediately
     * after invoking the constructor. </p>
     *
     * @param content the {@link com.entity.mobiledeviceendpoint.model.MobileDevice}
     * @since 1.13
     */
    protected UpdateMobileDevice(com.entity.mobiledeviceendpoint.model.MobileDevice content) {
      super(Mobiledeviceendpoint.this, "PUT", REST_PATH, content, com.entity.mobiledeviceendpoint.model.MobileDevice.class);
    }

    @Override
    public UpdateMobileDevice setAlt(java.lang.String alt) {
      return (UpdateMobileDevice) super.setAlt(alt);
    }

    @Override
    public UpdateMobileDevice setFields(java.lang.String fields) {
      return (UpdateMobileDevice) super.setFields(fields);
    }

    @Override
    public UpdateMobileDevice setKey(java.lang.String key) {
      return (UpdateMobileDevice) super.setKey(key);
    }

    @Override
    public UpdateMobileDevice setOauthToken(java.lang.String oauthToken) {
      return (UpdateMobileDevice) super.setOauthToken(oauthToken);
    }

    @Override
    public UpdateMobileDevice setPrettyPrint(java.lang.Boolean prettyPrint) {
      return (UpdateMobileDevice) super.setPrettyPrint(prettyPrint);
    }

    @Override
    public UpdateMobileDevice setQuotaUser(java.lang.String quotaUser) {
      return (UpdateMobileDevice) super.setQuotaUser(quotaUser);
    }

    @Override
    public UpdateMobileDevice setUserIp(java.lang.String userIp) {
      return (UpdateMobileDevice) super.setUserIp(userIp);
    }

    @Override
    public UpdateMobileDevice set(String parameterName, Object value) {
      return (UpdateMobileDevice) super.set(parameterName, value);
    }
  }

  /**
   * Builder for {@link Mobiledeviceendpoint}.
   *
   * <p>
   * Implementation is not thread-safe.
   * </p>
   *
   * @since 1.3.0
   */
  public static final class Builder extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient.Builder {

    /**
     * Returns an instance of a new builder.
     *
     * @param transport HTTP transport, which should normally be:
     *        <ul>
     *        <li>Google App Engine:
     *        {@code com.google.api.client.extensions.appengine.http.UrlFetchTransport}</li>
     *        <li>Android: {@code newCompatibleTransport} from
     *        {@code com.google.api.client.extensions.android.http.AndroidHttp}</li>
     *        <li>Java: {@link com.google.api.client.googleapis.javanet.GoogleNetHttpTransport#newTrustedTransport()}
     *        </li>
     *        </ul>
     * @param jsonFactory JSON factory, which may be:
     *        <ul>
     *        <li>Jackson: {@code com.google.api.client.json.jackson2.JacksonFactory}</li>
     *        <li>Google GSON: {@code com.google.api.client.json.gson.GsonFactory}</li>
     *        <li>Android Honeycomb or higher:
     *        {@code com.google.api.client.extensions.android.json.AndroidJsonFactory}</li>
     *        </ul>
     * @param httpRequestInitializer HTTP request initializer or {@code null} for none
     * @since 1.7
     */
    public Builder(com.google.api.client.http.HttpTransport transport, com.google.api.client.json.JsonFactory jsonFactory,
        com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
      super(
          transport,
          jsonFactory,
          DEFAULT_ROOT_URL,
          DEFAULT_SERVICE_PATH,
          httpRequestInitializer,
          false);
    }

    /** Builds a new instance of {@link Mobiledeviceendpoint}. */
    @Override
    public Mobiledeviceendpoint build() {
      return new Mobiledeviceendpoint(this);
    }

    @Override
    public Builder setRootUrl(String rootUrl) {
      return (Builder) super.setRootUrl(rootUrl);
    }

    @Override
    public Builder setServicePath(String servicePath) {
      return (Builder) super.setServicePath(servicePath);
    }

    @Override
    public Builder setHttpRequestInitializer(com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
      return (Builder) super.setHttpRequestInitializer(httpRequestInitializer);
    }

    @Override
    public Builder setApplicationName(String applicationName) {
      return (Builder) super.setApplicationName(applicationName);
    }

    @Override
    public Builder setSuppressPatternChecks(boolean suppressPatternChecks) {
      return (Builder) super.setSuppressPatternChecks(suppressPatternChecks);
    }

    @Override
    public Builder setSuppressRequiredParameterChecks(boolean suppressRequiredParameterChecks) {
      return (Builder) super.setSuppressRequiredParameterChecks(suppressRequiredParameterChecks);
    }

    @Override
    public Builder setSuppressAllChecks(boolean suppressAllChecks) {
      return (Builder) super.setSuppressAllChecks(suppressAllChecks);
    }

    /**
     * Set the {@link MobiledeviceendpointRequestInitializer}.
     *
     * @since 1.12
     */
    public Builder setMobiledeviceendpointRequestInitializer(
        MobiledeviceendpointRequestInitializer mobiledeviceendpointRequestInitializer) {
      return (Builder) super.setGoogleClientRequestInitializer(mobiledeviceendpointRequestInitializer);
    }

    @Override
    public Builder setGoogleClientRequestInitializer(
        com.google.api.client.googleapis.services.GoogleClientRequestInitializer googleClientRequestInitializer) {
      return (Builder) super.setGoogleClientRequestInitializer(googleClientRequestInitializer);
    }
  }
}
